#! /bin/bash

OBRAS="$MAEDIR/obras.mae"
SALAS="$MAEDIR/salas.mae"

nombreComando="Recibir_A"

function enviarLog(){
	$GRUPO/Grabar_L.sh "$nombreComando" "$2" "$3"
}

function obtenerIdArchivo() {
   ENTRADA=$1
   separador=$2

   OIFS="$IFS" #backup IFS
   IFS="$separador"
   read -a array <<< "${ENTRADA}"

   tamanio=${#array[@]}
   echo "${array[0]}"

   IFS="$OIFS" #restore IFS
}

function obtenerCorreoArchivo() {
   ENTRADA=$1
   separador=$2

   OIFS="$IFS" #backup IFS
   IFS="$separador"
   read -a array <<< "${ENTRADA}"

   tamanio=${#array[@]}
   echo "${array[1]}"

   IFS="$OIFS" #restore IFS
}


function existeCombinacion(){
	identificador="$1"
	correo="$2"
	archivo="$3"

	grep -q "^$identificador;.*;$correo.*$" $archivo	
	if [ $? -eq 0 ]
	then 
		return 1 
	else
		return 0
	fi

}
function obtener_pid()
{
 echo `ps | grep "Reservar_A.sh" | cut -d "p" -f 1`
}


function hayArchivosAceptados(){
	typeset -i aceptados=`ls -1 "$ACEPDIR" | wc -l`
	#Verifico que hayan arribos
	if [ "$aceptados" -ne 0 ]
	then
		#Me fijo que no este corriendo ya
		echo | ps | grep -q $BINDIR/Reservar_A.sh 
		if [ $? -ne 0 ];
		 then
		  $BINDIR/Reservar_A.sh &
		  echo "Reservar_A inicializado bajo el no. `obtener_pid $BINDIR/Reservar_A.sh`"
		 else
		  echo "Reservar_A corriendo bajo el no. `obtener_pid $BINDIR/Reservar_A.sh`"
		fi
	fi
	
}
function hayArribos()
{
	ARRIBOS=0
	typeset -i arribos=`ls -1 "$ARRIDIR" | wc -l`
	#Verifico que hayan arribos
	if [ "$arribos" -ne 0 ]
		then
		
		for i in `ls -1 "$ARRIDIR"`
		do
			#Por cada archivo 
			#1- Valido archivo de texto 
			#2- Verifico nombre
			
			# 1-es archivo de texto?
			type=$(file -ib "$ARRIDIR/$i")
			found=$(echo $type | grep '^text/plain;.*$')
			if [ $? -ne 0 ]; 
			then
			  Mover_A.sh "$ARRIDIR/$i" $RECHDIR	
			  enviarLog $nombreComando E "Archivo $i Tipo de archivo invalido"	
			  continue
			fi
			
			# 2- nombre valido invitador
			found=$(echo $i | grep '^[A-Za-z0-9]*.inv$')
			if [ "$found" ]; then
				#es un archivo de invitados
				Mover_A.sh "$ARRIDIR/$i" $REPODIR
				enviarLog $nombreComando I "El Archivo de invitados $i se movio con exito a $REPODIR"
			else
				# 2- nombre valido solicitante
				
				found=$(echo $i | grep '^[0-9]*-[A-Za-z0-9_.-]*@[A-Za-z0-9_.-]*.[A-Za-z]*-[A-Za-z0-9_]*$')
									
				if [ $? -eq 0 ]; then
					#Valido quien mando el archivo
					n=$(obtenerIdArchivo $i "-")
					rem=$(( $n % 2 ))
	 				
					if [ $rem -eq 0 ]
					then
					  #echo "$n es par -> es ID de Sala (solic x sala teatral)"
					  correo=$(obtenerCorreoArchivo $i "-")					  
					  #me fijo si existe combinacion en archivo de salas
					  archivo=$SALAS
					  existe=$(existeCombinacion $n $correo $archivo)
					else
					  #echo "$n es impar -> es ID de obra (solic x prod gral o ejecutiva)"
					  correo=$(obtenerCorreoArchivo $i "-")					  
					  #me fijo si existe combinacion en archivo de obras
					  archivo=$OBRAS
					  existe=$(existeCombinacion $n $correo $archivo)
					fi
					
					if [ $? -eq 0 ]
					then
						Mover_A.sh "$ARRIDIR/$i" $RECHDIR	 
						 enviarLog $nombreComando E "La combinacion $n-$correo no existe en $archivo"	
						 continue
					else
						Mover_A.sh "$ARRIDIR/$i" $ACEPDIR	 
						enviarLog $nombreComando I "El Archivo de reserva $i se movio con exito a $ACEPDIR"	
						ARRIBOS=1
					fi
					
				else
					Mover_A.sh "$ARRIDIR/$i" $RECHDIR
					enviarLog $nombreComando E "Nombre del archivo $i  con formato invalido"	
					continue
				fi
			fi
		
		done
	fi
	#si hay archivos aceptados  correr el reservar
	if [ $ARRIBOS -eq 1 ]
	then
		hayArchivosAceptados
	fi
}

COUNTER=1
while :;do
	#Logueo el nro de ciclo
	enviarLog $nombreComando I "Ciclo Nro $COUNTER"
	#me fijo si hay arribos
	hayArribos
	#incremento el ciclo en 1
	let COUNTER=COUNTER+1 
sleep 20
done
